/**
 * 监听push 消息 以及后台数据恢复
 */
let timer = false;

export default {
	// 开启监听推送 
	pushListener() {

		console.log('pushListener=================pushListener');
		// 点击推送信息  离线
		plus.push.addEventListener('click', res => {
			//模板消息
			console.log('push--->click');
			this.addEventListenerPushMessage(res, 'click');
		});
		// 接收推送信息  在线
		plus.push.addEventListener('receive', res => {
			console.log('push--->receive',JSON.stringify(res));
			this.addEventListenerPushMessage(res, 'receive');

		});
	},
	// 点击click方法，获取push数据，判断是否登录，进行跳转
	addEventListenerPushMessage(push, pushType) {
		clearTimeout(timer);
		timer = setTimeout(function() {
			const {
				text,
				title,
				type,
				transmission
			} = push.payload;
			console.log('push--->event',transmission);
			//如果是在线收到推送消息，需要创建一条推送  cover: false 是否覆盖上一条推送消息
			if (pushType === 'receive') {
				const options = {
					cover: false,
					title: title
				}
				//创建本地消息
				//content: ( String ) 必选
				//消息显示的内容，在系统通知中心中显示的文本内容。
				//payload: ( String ) 可选
				//消息承载的数据，可根据业务逻辑自定义数据格式。
				//options: ( MessageOptions ) 可选
				//创建消息的额外参数，参考MessageOptions。
				console.log('push--->text',text);
				plus.push.createMessage(text, JSON.stringify(push.payload), options)
			} else {
				// 聊天消息处理
				if (type == 2) {
					const {url,...other} = transmission
					wx.setStorageSync('list', other)
					uni.navigateTo({
						url
					})
				} else {
					uni.navigateTo({
						url: transmission
					})
				}
			}
		}, 1500)
	},
	getClientInfoLoop() {

		plus.push.getClientInfoAsync(function(info) {
			// 如果info不存在，或者info存在，cid不存在则再次获取cid
			if (!info || !info.clientid) {
				let infoTimer = false;
				infoTimer = setInterval(function() {
					// 同步获取cid
					var pinf = plus.push.getClientInfo();
					var cid = pinf.clientid; //客户端标识 
					console.log(pinf, cid, cid ? true : false);
					if (cid) {
						clearInterval(infoTimer); //清定时器
						uni.setStorageSync('cid', cid); // 储存cid
						console.log(uni.getStorageSync('cid'), '储存的cid======');
						// this.passCid(cid); // 向后台传送cid
						// 是否有cid,登录的时候上传后台，否则首页上传
						var havecid = uni.getStorageSync('havecid');
						if (!havecid && cid) {
							// this.$http.get('/sys/updateCid?clientId=' + cid).then(({
							// 	data
							// }) => {
							// 	console.log(cid, 'passCid，向后台传cid========2data', data);
							// 	if (data.success) {
							// 		uni.setStorageSync('havecid', true);
							// 	}
							// })

						}
					}
				}, 100);
			} else if (info && info.clientid) {
				// 储存cid
				var cid = info.clientid;
				uni.setStorageSync('cid', cid);
				console.log(uni.getStorageSync('cid'), '本地储存cid======');
				// this.passCid(cid); // 向后台传送cid
				// 是否有cid,登录的时候上传后台，否则首页上传
				var havecid = uni.getStorageSync('havecid');
				console.log('havecid', havecid, cid);
				console.log(!havecid && cid)
				if (!havecid && cid) {
					// this.$http.get('/sys/updateCid?clientId=' + cid).then(({
					// 	data
					// }) => {
					// 	console.log(cid, 'passCid，向后台传cid========2data', data);
					// 	if (data.success) {
					// 		uni.setStorageSync('havecid', true);
					// 	}
					// })

				}
			}

		}, function(e) {
			console.log('Failed', JSON.stringify(e));
			// 同步获取cid
			var pinf = plus.push.getClientInfo();
			var cid = pinf.clientid; //客户端标识 
			if (cid) {
				// 储存cid
				uni.setStorageSync('cid', cid);
				console.log(uni.getStorageSync('cid'), '======');
				// this.passCid(cid); // 向后台传送cid
			}
		})
	},
	// 向后台传送cid
	passCid(cid) {

		// 是否有cid,登录的时候上传后台，否则首页上传
		var havecid = uni.getStorageSync('havecid');
		console.log('havecid', havecid, cid, !havecid && cid);
		if (!havecid && cid) {
			// this.$http.get('/sys/updateCid?clientId=' + cid).then(({
			// 	data
			// }) => {
			// 	console.log(cid, 'passCid，向后台传cid========2data', data);
			// 	if (data.success) {
			// 		uni.setStorageSync('havecid', true);
			// 	}
			// })

		}
	},
	// // receive，接收到推送信息，前端创建推送信息
	// addEventListenerReceive(push, type) {

	// 	console.log("push, type", push, type);
	// 	clearTimeout(timer);
	// 	timer = setTimeout(function() {
	// 		plus.push.createMessage(push.content,push.payload,push.options);
	// 	}, 1500)
	// },
}
